package com.yueke.gemini.utils;

import com.bizvane.ishop.constant.Data;
import com.bizvane.ishop.constant.ValueType;

import java.util.Map;
import java.util.Map.Entry;

public class MapUtil {

    /**
     * 根据 key 从 Map 中获取指定对象
     * @param map
     * @param key
     * @return
     */
    public static Object getObject(Map<String, Data> map, String key) {
        for (Entry entry : map.entrySet()) {
            if (entry.getKey().equals(key)) {
                return entry.getValue();
            }
        }
        return null;
    }

    /**
     * 获取通信 Data 类型数据
     * @param map Data 类型 Map
     * @param key 键值
     * @return
     */
    public static Data getData(Map<String, Data> map, String key) {
                return (Data) getObject(map,key);
    }

    /**
     * 获取通信 Data 类型数据 type 为 ValueType.PARAM value 值
     * @param map Data 类型 Map
     * @param key 键值
     * @return
     */
    public static String getParam(Map<String, Data> map, String key) {
        Data data = getData(map, key);
        if (data != null && data.type == ValueType.PARAM) {
            return data.data;
        } else {
            return null;
        }
    }

    /**
     * 获取通信 Data 类型数据 type 为 ValueType.JSON value 值
     * @param map Data 类型 Map
     * @param key 键值
     * @return
     */
    public static String getJSONString(Map<String, Data> map, String key) {
        Data data = getData(map, key);
        if (data != null && data.type == ValueType.JSON) {
            return data.data;
        } else {
            return null;
        }
    }

    /**
     * 获取通信 Data 类型数据 type 为 ValueType.XML value 值
     * @param map Data 类型 Map
     * @param key 键值
     * @return
     */
    public static String getXMLString(Map<String, Data> map, String key) {
        Data data = getData(map, key);
        if (data != null && data.type == ValueType.XML) {
            return data.data;
        } else {
            return null;
        }
    }

    /**
     * 获取通信 Data 类型数据 type 为 ValueType.TEXT value 值
     * @param map Data 类型 Map
     * @param key 键值
     * @return
     */
    public static String getText(Map<String, Data> map, String key) {
        Data data = getData(map, key);
        if (data != null && data.type == ValueType.TEXT) {
            return data.data;
        } else {
            return null;
        }
    }
}

